Skip to content

Add capability-driven audio write and conversion pipeline - #125

Draft
Hawkynt wants to merge 46 commits into
mainfrom
feature/audio-write-pipeline
Draft

Add capability-driven audio write and conversion pipeline#125
Hawkynt wants to merge 46 commits into
mainfrom
feature/audio-write-pipeline

Conversation

@Hawkynt

@Hawkynt Hawkynt commented Aug 29, 2026

Copy link
Copy Markdown
Owner

Summary

Follow-up to merged #106. This PR turns the newly available managed audio encoders into a reusable container write/transcode pipeline instead of adding pairwise converters.

Common pipeline

  • container-neutral PCM and encoded-access-unit contracts in Compression.Registry
  • Compression.Lib.AudioConversionOperation routes conversions in least-destructive order:
    1. same-format byte-exact passthrough
    2. packet-preserving demux/remux
    3. canonical PCM decode/encode
    4. existing per-channel WAV pseudo-archive bridge
  • existing formats that expose channel WAVs automatically become transcode sources

Implemented write participants so far

  • AAC/ADTS: PCM encode/decode, archive create, raw AAC access-unit demux + AudioSpecificConfig
  • MP4/M4A: audio-only AAC-LC muxer with ISO BMFF timing/sample tables and direct AAC access-unit remux
  • FLAC: canonical PCM source/target and channel-WAV create surface
  • Ogg: managed Vorbis/Opus encode/create plus canonical PCM decode

Tests

  • byte-exact same-format passthrough
  • AAC -> M4A preserves every compressed AAC access unit
  • WAV -> FLAC lossless round trip
  • WAV -> Ogg Vorbis
  • WAV -> Ogg Opus
  • WAV -> M4A encode/mux
  • explicit unsupported codec/container failure

Next in this PR

Extend the same interfaces to MP3, WavPack, WAV/AIFC/AU compressed modes and then game/multi-stream containers where a real semantic writer exists. Capability/documentation states will only be promoted after writer coverage passes.

Hawkynt added 30 commits August 29, 2026 12:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant